<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // async await 讲解
    // 1. async 修饰的方法 会默认返回一个promise对象
    // 2. async修饰的方法中 如果return了值 会在方法调用后 通过then中的回调函数来获取
    // 3. await必须搭配async来使用，await后面一般跟的是一个异步任务，await会阻塞async中得代码执行，
    // 等到await后面的异步任务执行完毕之后才会往下执行

    // 1. async 修饰的方法 会默认返回一个promise对象
    // async function fn() { }
    // console.log(fn()) 


    // 2.async修饰的方法中 如果return了值 会在方法调用后 通过then中的回调函数来获取
    // async function fn(){
    //   return 123
    // }
    // fn().then(res=>{
    //   console.log(res)
    // })

    // await必须搭配async来使用，await后面一般跟的是一个异步任务，await会阻塞async中得代码执行，
    // 等到await后面的异步任务执行完毕之后才会往下执行

    function asyncFn(){
      return new Promise((resolve,reject)=>{
        setTimeout(() => {
          console.log(1)
          resolve()
        }, 2000);
      })
    }

    async function fn(){
      console.log(2)
      await asyncFn()
      console.log(3)
    }
    fn()
  </script>
</body>

</html>